Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fuzzing/mutational grey box #23

Merged
merged 23 commits into from
Jul 3, 2024
Merged

Conversation

hoegma
Copy link
Collaborator

@hoegma hoegma commented Jul 2, 2024

Added to project:

  • GreyBoxFuzzer
  • GreyBoxRunner
  • helper classes (Seed, SeedManager, DataTypeCreator)
  • test cases

You can create a seed pool with the Greyboxfuzzer. The seed pool can be generated randomly or predefined.
The greyboxfuzzer takes the seed pool and selects one of the seeds (seeds that discover new paths have a higher probability of being selected).
Before executing the function with the seed values, one of the seed values is randomly mutated. If a new path is discovered with a mutated seed, this seed is added to the seed pool.
The energy of the seed is then adjusted depending on how often the execution path has already been seen. If the path has already been seen several times, the energy is reduced and if a new path is discovered, the energy is increased.

Matthias Högel added 18 commits June 16, 2024 00:49
- Added DataTypeCreator: Necessary for creating certain data types
- Extended SeedManager: Population can be created
- Extended methods for creating random int, uint, string so that
  random values can be created
It is now possible to track the branch coverage of a test function.
Seeds will now be selected by the energy of the seed.
It is now possible to mutate the seed values.
UML is updated.
Fixed the bug, that the amount of branches that was covert was
smaller than the amount of hashes were stored in the hash_dict.
- Added DataTypeCreator: Necessary for creating certain data types
- Extended SeedManager: Population can be created
- Extended methods for creating random int, uint, string so that
  random values can be created
It is now possible to track the branch coverage of a test function.
Seeds will now be selected by the energy of the seed.
Fixed the bug, that the amount of branches that was covert was
smaller than the amount of hashes were stored in the hash_dict.
- Mutate before running tests
- If new path was discovered -> insert seed to seed pool -> point of
  interest
@hoegma hoegma self-assigned this Jul 2, 2024
Matthias Högel added 3 commits July 2, 2024 21:49
- Added test cases of helpers.py for greybox fuzzing
- Mutation of str, int, float is now made with mutational blackbox
  fuzzer
- Deleted mutator and shiftet mutation method to GreyBoxRunner ->
  Mutator class unnecessary with one method in it
- Adjusted uml diagram
@hoegma
Copy link
Collaborator Author

hoegma commented Jul 2, 2024

Added Grey box fuzzer / runner + test functions to project.

@hoegma hoegma marked this pull request as ready for review July 2, 2024 20:17
Matthias Högel added 2 commits July 2, 2024 22:32
@JKortmann JKortmann merged commit 0aba679 into master Jul 3, 2024
@ThorbenCarl ThorbenCarl deleted the fuzzing/mutational_grey_box branch July 4, 2024 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants